package com.code.leetcode._202507;

//58 最后一个单词的长度
public class LengthOfLastWord {
    /**
     * 给你一个字符串s，由若干单词组成，单词前后用一些空格字符串隔开。返回字符串中最后一个单词的长度。
     * 单词是指仅由字母组成、不包含任何空格字符的最大字符串。
     * 示例1：输入：s = "Hello World"
     * 输出：5
     * 解释：最后一个单词是“World”，长度为 5。
     * 示例2：输入：s = "   fly me   to   the moon  "
     * 输出：4
     * 解释：最后一个单词是“moon”，长度为 4。
     * 示例3：输入：s = "luffy is still joyboy"
     * 输出：6
     * 解释：最后一个单词是长度为 6 的“joyboy”。
     **/
    public static void main(String[] args) {
        LengthOfLastWord l = new LengthOfLastWord();
        System.out.println(l.lengthOfLastWord("luffy is still joyboy"));
    }

    /**
     * 方向遍历
     * 题目要求得到字符串中最后一个单词的长度，可以方向遍历字符串，寻找最后一个单词并计算其长度
     * 由于字符串中至少存在一个单词，因此字符串中一定有字母。首先找到字符串中的最后一个字母，该字母
     * 即为最后一个单词的最后一个字母
     * 从最后一个字母开始继续反向遍历字符串，直到遇到空格或者到达字符串的起始位置，遍历到的每个字母都是最后
     * 一个单词中的字母，因此遍历到的字母数量即为最后一个单词的长度
     **/
    public int lengthOfLastWord(String s) {
        int index = s.length() - 1;
        while (s.charAt(index) == ' ') {
            index--;
        }
        int wordLength = 0;
        while (index >= 0 && s.charAt(index) != ' ') {
            wordLength++;
            index--;
        }
        return wordLength;
    }

}
